Conventionally, the accessibility to memory is an important factor of the performance of a program when computation for science and/or technology is performed by a vector computer.
A vector computer gains access to memory in the following methods.
(1) Consecutive access: For example, the following source program (Fortran source) is executed.
do i=1, 10 PA1 a(i)=b (i) PA1 enddo PA1 do i=1, 10, 2 PA1 a(i)=b(i) PA1 enddo PA1 do i=1, 10 PA1 a(list (i))=b(list (i)) PA1 enddo
In this case, an array a and an array b are consecutively accessed by DO index i.
(2) Access with distance: For example, the following source program (Fortran source) is executed.
In this case, an array a and an array b are accessed with a distance of two using a DO index i.
(3) List access: For example the following source program (Fortran source) is executed.
In this case, an array a and an array b are accessed at random using a value of a list array `list`.
The above described access methods can be arranged in the order of (1), (2), and (3) from the highest efficiency (speed). That is, the consecutive access is the highest method, and the list access is the slowest method. One of the most important objects in tuning a source program is to change a given source program into an algorithm for high-speed memory access.
However, the slowest list access method (3) cannot avoid appearance in a program algorithm, and cannot be changed into access such as the access (1) and (2).
With memory in which an address is assigned in an interleave system, there often arises a phenomenon of a bank conflict in which a plurality of access requests are transmitted to a memory bank within a predetermined time. When a bank conflict arises in list access, the access speed largely depends on a list pattern. When access concentrates on a single bank and competition occurs, the access time may be several ten times a normal value.